package com.hhkj.study.admin.course.service.extend;

import com.hhkj.study.admin.course.entity.Course;
import com.hhkj.study.admin.course.entity.CourseAssocResourceStat;
import com.hhkj.study.admin.course.entity.CourseStructure;
import com.hhkj.study.admin.course.enums.CourseAssocResourceTypeEnum;
import com.hhkj.study.admin.course.model.podo.CourseDo;
import com.hhkj.study.admin.course.model.podo.CoursePo;
import com.hhkj.study.admin.course.model.res.UserCourseRes;
import com.ruoyi.common.base.biz.service.extend.BaseExtendService;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
*
* @author SERVER
* @since 2024-09-18
*/

public interface CourseExtendService extends BaseExtendService<Course, CourseDo, CoursePo> {

    /**
     * 用户购买课程列表
     * @param userId
     * @param courseType 课程大类
     * @return
     */
    List<UserCourseRes> getCourseListByUserId(Long userId, Long courseType);

    /**
     * 统计课程下关联的资源保存
     * @param course 课程
     * @return
     */
    boolean saveStatCourseAssocResource(Course course, List<CourseStructure> structureJsonList);

    /**
     * 根据id列表查询课程列表 不查询课程结构
     * @param idList
     * @return
     */
    List<Course> listByIdList(Collection<? extends Serializable> idList);

    /**
     * 批量查询课程资源
     * @param courseIdList
     * @param courseList
     * @return
     */
    List<Course> getCourseResList(List<Long> courseIdList, List<Course> courseList);

    /**
     * 通过课程id 资源类型获取课程统计的资源信息
     * @param courseId
     * @param resourceTypeEnum
     * @return
     */
    CourseAssocResourceStat getCourseAssocResourceStat(Long courseId, CourseAssocResourceTypeEnum resourceTypeEnum);
}